import json
from datetime import datetime

class UserInfo:
    """封装用户信息的类"""
    
    def __init__(self, username, email, password, registration_date):
        self.username = username
        self.email = email
        self.password = password  # 注意：实际项目中应加密存储！
        self.registration_date = registration_date
    
    def __str__(self):
        """魔术方法：返回用户信息的字符串表示（满足要求3）"""
        return (
            f"用户名: {self.username}\n"
            f"邮箱: {self.email}\n"
            f"注册日期: {self.registration_date}\n"
            "------------------"
        )

def load_users_from_json(file_path):
    """
    从 JSON 文件加载用户数据并返回 UserInfo 对象列表
    （满足要求1、2、4）
    """
    try:
        with open('.venv\\ten\\json.txt', 'r', encoding='utf-8') as file:
            users_data = json.load(file)
        
        users = []
        for user_data in users_data:
            user = UserInfo(
                username=user_data["username"],
                email=user_data["email"],
                password=user_data["password"],
                registration_date=user_data["registration_date"]
            )
            users.append(user)
        return users
    
    except FileNotFoundError:
        print(f"错误：文件 {file_path} 不存在！")
        return []
    except json.JSONDecodeError:
        print("错误：JSON 格式不正确！")
        return []
    except KeyError as e:
        print(f"错误：缺少必要的字段 {e}")
        return []

if __name__ == "__main__":
    # 1. 读取 json.txt 并封装为 UserInfo 对象列表
    users = load_users_from_json("json.txt")
    
    # 2. 遍历列表输出所有用户信息（满足要求5）
    print("所有用户信息：\n")
    for user in users:
        print(user)  # 自动调用 __str__ 方法